// ProjectName: go-learn-demo
// PackageName: _1_mysql
// Description:
// Author: hy.bai
// Date: 2025-08-04 11:32

package gormmysql

import (
	"fmt"
	config "go-learn-demo/08_gorm/00_config"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
	"log/slog"
)

func TestConnection() {
	// 1.拼接URL地址
	dns := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local",
		config.MYSQL_USERNAME, config.MYSQL_PWD, config.MYSQL_IP, config.MYSQL_PORT, config.MYSQL_DB)
	// parseTime是查询结果是否自动解析为时间类型,即：time.Time类型，对应的数据库中的类型是：datetime
	// loc是Mysql的时区设置
	// 2.定义gorm的配置,打印Sql日志
	gConfig := &gorm.Config{
		Logger: logger.Default.LogMode(logger.Info),
		// DryRun: true, // 生成SQL语句, 不执行
	}
	dialect := mysql.Open(dns)             // 获取数据库方言对象
	db, err := gorm.Open(dialect, gConfig) // 根据数据库方言对象和配置创建数据库连接对象
	if err != nil {
		slog.Error(fmt.Sprintf("连接数据库失败,失败原因是:%s\n", err.Error()))
	} else {
		slog.Info(db.Name()) // &{0xc00011e210 <nil> 0 0xc0001f6000 1}:表示数据库连接成功
	}
}
